A network is a group of two or more network-accessible devices linked by wired or wireless connections. A network-accessible device is a computer system, e.g., a desktop computer, a personal digital assistant, a mobile or laptop computer, a cellular or mobile telephone, etc., that is accessible by or over a network.
Typically, data (a packet) travels through numerous points during transmission from an originating computer system (a source) to a destination computer system (a destination). A router is a packet-forwarding device that determines the next point to which a packet is forwarded along a route to a destination. In order to determine the next point, the router accesses a route table. The route table includes entries corresponding to the next points to which packets are forwarded along routes to different destinations in the network. A route table may include many routes to a given destination.
Routing protocol applications provide the routes included in the routing table. A routing protocol application is an application running on a router that discovers routes to different destinations from its peers in the network, e.g., open shortest path first (OSPF), routing information protocol (RIP) and border gateway protocol (BGP). See, e.g., Internet Engineering Task Force (IETF) Network Working Group, Request for Comments (RFC) 2328, “OSPF Version 2” April 1998; IETF Network Working Group, RFC 1775, “A Border Gateway Protocol 4 (BGP-4)”, March 1995; IETF Network Working Group, RFC 2453 “RIP Version 2” November 1998. When a route is discovered or an existing route disappears, a routing protocol application running on one router transmits the information to its peers so that all of the routers in the network include the same routing information. For example, OSPF running on one router discovers a new route and transmits the new route to other routers in the network, which use the route to update their route tables.
The different routing protocol applications are typically integrated into a single program. The router maintains a single route table of routes discovered by each routing protocol application. The routing protocol applications may access all routes, including those they did not discover, by accessing a common memory.
A drawback to integrating the routing protocol applications into a single program is that it creates a single point of failure, i.e., when one routing protocol application is inoperable (e.g., because the routing protocol application is being updated or there is a problem with the routing protocol application), the entire router is inoperable. An alternative approach is to run each routing protocol application as an independent process. As a result, when one routing protocol application is inoperable, it only affects that routing protocol application, rather than the entire router. However, when routing protocol applications run as independent processes, they do not have access to a common memory. Consequently, a routing protocol application is not able to access routes discovered by other routing protocol applications.